package com.redoor.app.stake.basicdata.service;

import com.redoor.app.stake.basicdata.model.SyncOrganization;
import com.redoor.app.stake.basicdata.model.UsrDistrict;
import com.redoor.app.stake.basicdata.model.controllerModel.SyncOrganizationCriteria;
import com.redoornetwork.framework.mybatis.service.Service;

import java.util.List;

/**
 * Created by wangjunlei on 2018-03-05 17:11:50.
 */
public interface SyncOrganizationService {

    /**
     * 初始化组织机构到redis
     * @param isDistraint
     */
    void initOrganizationToRedis(boolean isDistraint);

    /**
     * 初始化行政区划到redis
     * @param isDistraint
     */
    void initDistrictIntoRedis(boolean isDistraint);

    /**
     * 删除
     * @param orgNo
     */
    int deleteByOrgNo(String orgNo);

    /**
     * 新增或修改
     * @param organization
     */
    void updateByOrgNo(SyncOrganizationCriteria organization);

    /**
     * 根据组织机构查询子列表
     * @param parentNo
     * @return
     */
    List<SyncOrganization> findByParentOrgNo(String parentNo);

    /**
     * 获取所有组织机构列表
     * @param lists 获取集合内所有子集合
     * @Param status 0是所有,1是当前用户
     * @param isroot 是否为根节点
     * @return
     */
    List<SyncOrganization> getAllList(List<SyncOrganization> lists,boolean isroot);

    /**
     * 根据组织机构查询
     * @param orgNo
     * @return
     */
    SyncOrganization get(String orgNo);

    /**
     * 根据主键查询组织机构
     * @param uuid
     * @return
     */
    public SyncOrganization getOrganizationByPk(String uuid);

    /**
      * 获取orgNo的父级以上所有组织机构名称
      * @param orgNo
      * @return
      */
    String getFullOrgName(String orgNo);


    /**
     * 获取行政机构
     * @return
     */
    List<UsrDistrict> listUsrDistrictAll();


    String getDistrictName(String code);
    /**
     * 根据唯一索引orgNo进行判断有则修改,无则新增
     * @Author zhangYiHang
     * @Date 2018/4/10 15:51
     * @Param
     */
    int inserOrUpdateByOrgNoToSyncOrganization(SyncOrganization syncOrganization);
    /**  
     *  通过一个组织机构编码获取地市级别组织机构编码  
     *   
     * @author ZhangMumu  
     * @date 2018/4/19 0019 14:14  
     * @param   
     * @return   
     */  
    String getCityOrgNoByAnOrgNo(String orgNo);
    /**  
     *  通过一个组织机构编码获取省级别组织机构编码  
     *   
     * @author ZhangMumu  
     * @date 2018/4/19 0019 14:15
     * @param   
     * @return   
     */  
    String getProvinceOrgNoByAnOrgNo(String orgNo);
}
